为什么软件安全漏洞持续增长
软件安全漏洞持续增长的原因主要包括以下几个方面。
1.软件开发安全意识淡薄
传统软件开发更多的重视软件功能,而不注重对安全风险的管理。软件开发公司工期紧、任务重,为争夺客户资源、抢夺市场份额而仓促发布软件。软件开发人员将软件功能视为头等大事,对软件安全架构、安全防护措施认识不够,只关注是否实现需要的功能,不从“坏人”的角度来思考软件安全问题。
2.软件开发缺乏安全知识
传统软件公司中,公司管理层和软件开发人员都缺乏软件安全开发知识,不知道如何才能更好地实现安全的软件。公司管理层缺乏软件安全开发的管理流程、方法和技巧,缺少正确的安全经验积累和培训教材。软件开发人员大多数仅仅从学校学会编程技巧,不了解如何将软件安全需求、安全特性和编程方法进行结合。
3.软件趋向大型化和复杂化
现代软件功能越来越强,功能组件越来越多,软件也变得越来越复杂。可以看出,操作系统的代码量是相当惊人的,而且随着版本的更新,代码量迅速增加。现在基于网络的应用系统更多地采用了分布式、集群和可扩展架构,使得软件的内部结构错综复杂。研究显示,软件漏洞的增长同软件复杂性、代码行数的增长呈现正相关的关系,即“代码行越多,缺陷也就越多”。
4.软件第三方扩展增多
目前软件应用向可扩展化方向发展,成熟的软件也可以接受开发者或第三方的扩展,系统功能得到扩充,以满足用户不同的需求。如Firefox和chrome浏览器支持第三方插件、Windows操作系统支持动态加载第三方驱动程序、Word和Excel等软件支持第三方脚本和组件运行等,这些可扩展性在增加软件功能的同时,也加重了软件的安全问题。
5.软件使用场景更具威胁
计算机网络技术拓展了软件的功能范围和使用的方便程度,软件应用获得了极大的发展。与此同时,网络环境也给攻击者带来了更多的机会,给软件带来了更大风险。由于软件被应用于各种环境,会面对不同层次的使用者,这使得软件开发需要考虑更多的安全问题。同时,黑客和恶意攻击者可以比以往获得更多的时间和机会来访问软件系统,并尝试发现软件中存在的安全漏洞。
软件存在漏洞和缺陷是不可避免的,可以使用缺陷密度,即每千行代码中存在的软件缺陷数量,来衡量软件的安全性。如果采用严格的软件开发质量管理机制和多重测试技术,软件公司的缺陷率要低得多。以下各类软件代码缺陷的统计数据也说明了这个情况。
普通软件工程师开发的软件的缺陷密度一般为50~250个缺陷/KLOC(千行代码);
普通软件开发公司开发的软件的缺陷密度为4~40个缺陷/KLOC(千行代码);
高水平的软件公司开发的软件的缺陷密度为2~4个缺陷/KLOC(千行代码);
美国NASA的软件缺陷密度为0.1个缺陷/KLOC(千行代码)。
国内软件开发的整体安全性不容乐观。根据中国信息安全测评中心对国内软件和系统的抽查,软件缺陷密度大约为120个缺陷/KLOC(千行代码),假设1%的安全缺陷可被黑客恶意利用并实施攻击,则被测系统可能存在8~12个可被利用的漏洞,从实际缺陷类型上来看,可以被利用的漏洞数量远远高于这个数目。
国内大量的软件开发厂商对软件开发过程的管理缺乏重视,大量软件使用开源代码和公用模块,缺陷率普遍偏高,可被利用的已知和未知缺陷较多。在我国核心部门和重要行业广泛应用的大量信息技术产品存在可供利用的漏洞隐患。据统计,2012年我国计算机病毒的感染率高达67%以上,截止到2012年10月,监测发现近55万个木马控制端IP,其中有27.4万个位于境外,共有16854个僵尸网络控制端IP,其中有10453个位于境外。